{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from os import environ\n",
    "environ['train_device'] = 'cuda:2' # training device: 'cpu' or 'cuda:X'\n",
    "environ['store_device'] = 'cuda:2' # Data storing device:  'cpu' or 'cuda:X'\n",
    "environ['dataset_file'] = '/data/scratch/mmerouani/processed_datasets/dataset_batch4X_train_val_set.pkl' #training / validation set\n",
    "environ['test_dataset_file'] = '/data/scratch/mmerouani/processed_datasets/dataset_batch4X_test_set.pkl' #test set\n",
    "environ['benchmark_dataset_file']='/data/scratch/mmerouani/processed_datasets/dataset_Benchmark_batch10.pkl' #benchmarks set \n",
    "#a copy of these datasets can be found in /data/commit/tiramisu/cost-model_datasets/processed_datasets/\n",
    "\n",
    "\n",
    "%run utils.py # imports and defines some utils functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Data loading"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loading batches from: /data/scratch/mmerouani/processed_datasets/dataset_batch4X_train_val_set.pkl\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 46640/46640 [26:40<00:00, 29.13it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPU memory on cuda:2 nearly full, switching to CPU memory\n",
      "Number of batches 1930\n",
      "Data loaded\n",
      "Sizes: (386, 1544) batches\n",
      "loading batches from: /data/scratch/mmerouani/processed_datasets/dataset_batch4X_test_set.pkl\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 8502/8502 [05:09<00:00, 27.44it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPU memory on cuda:2 nearly full, switching to CPU memory\n",
      "Number of batches 253\n",
      "Data loaded\n",
      "Sizes: (253, 0) batches\n"
     ]
    }
   ],
   "source": [
    "train_val_dataset, val_bl, val_indices, train_bl, train_indices = load_data(dataset_file, 0.2,max_batch_size=832)\n",
    "test_dataset, test_bl, test_indices, _, _ = load_data(test_dataset_file, 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model definition "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_size = 2534\n",
    "\n",
    "model = None \n",
    "\n",
    "model = Model_Recursive_LSTM_v2(input_size,drops=[0.112, 0.112, 0.112, 0.112])\n",
    "model.to(train_device)\n",
    "\n",
    "criterion = mape_criterion\n",
    "\n",
    "optimizer = AdamW(model.parameters(),weight_decay=0.375e-2)    \n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Model training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/800:  train Loss: 85.3366   val Loss: 81.7021   time: 30.68s   best: 81.7021\n",
      "Epoch 2/800:  train Loss: 80.2573   val Loss: 75.8455   time: 23.93s   best: 75.8455\n",
      "Epoch 3/800:  train Loss: 76.7990   val Loss: 72.1598   time: 24.36s   best: 72.1598\n",
      "Epoch 4/800:  train Loss: 74.6296   val Loss: 70.9524   time: 23.36s   best: 70.9524\n",
      "Epoch 5/800:  train Loss: 73.5082   val Loss: 70.6836   time: 23.76s   best: 70.6836\n",
      "Epoch 6/800:  train Loss: 72.5218   val Loss: 70.7238   time: 23.79s   best: 70.6836\n",
      "Epoch 7/800:  train Loss: 71.8005   val Loss: 69.4570   time: 25.18s   best: 69.4570\n",
      "Epoch 8/800:  train Loss: 70.9460   val Loss: 68.2762   time: 26.06s   best: 68.2762\n",
      "Epoch 9/800:  train Loss: 69.3416   val Loss: 64.1731   time: 23.74s   best: 64.1731\n",
      "Epoch 10/800:  train Loss: 67.0098   val Loss: 61.7273   time: 23.98s   best: 61.7273\n",
      "...\n",
      "...\n",
      "...\n",
      "Epoch 109/800:  train Loss: 26.3896   val Loss: 24.3845   time: 25.84s   best: 23.6946\n",
      "Epoch 110/800:  train Loss: 26.3453   val Loss: 23.3988   time: 27.62s   best: 23.3988\n",
      "Epoch 111/800:  train Loss: 26.2809   val Loss: 23.4053   time: 25.38s   best: 23.3988\n",
      "Epoch 112/800:  train Loss: 26.2419   val Loss: 23.5531   time: 24.49s   best: 23.3988\n",
      "Epoch 113/800:  train Loss: 26.0912   val Loss: 23.3612   time: 23.98s   best: 23.3612\n",
      "Epoch 114/800:  train Loss: 26.0706   val Loss: 23.2741   time: 24.11s   best: 23.2741\n",
      "Epoch 115/800:  train Loss: 26.0206   val Loss: 22.7565   time: 25.14s   best: 22.7565\n",
      "Epoch 116/800:  train Loss: 25.9786   val Loss: 23.5198   time: 23.74s   best: 22.7565\n",
      "Epoch 117/800:  train Loss: 25.8872   val Loss: 23.0883   time: 26.90s   best: 22.7565\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "bl_dict={'train':train_bl, 'val':val_bl}\n",
    "log_file = 'log_Recursive_LSTM_v2.txt'\n",
    "\n",
    "losses, best_model = train_model(model, criterion, optimizer , max_lr=0.001, dataloader=bl_dict,\n",
    "                                 num_epochs=800, logFile=log_file, log_every=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loading a pre-trained model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "model.load_state_dict(torch.load('Recursive_LSTM_v2_16.32.pkl',map_location=train_device))\n",
    "model.to(train_device)\n",
    "print()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Basic results on the test and validation set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 386/386 [00:02<00:00, 159.41it/s]\n",
      "100%|██████████| 253/253 [00:06<00:00, 36.35it/s]\n"
     ]
    }
   ],
   "source": [
    "val_df = get_results_df(train_val_dataset, val_bl, val_indices, model)\n",
    "test_df = get_results_df(test_dataset, test_bl, test_indices, model)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exec_time</th>\n",
       "      <th>prediction</th>\n",
       "      <th>target</th>\n",
       "      <th>abs_diff</th>\n",
       "      <th>APE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>276017.000000</td>\n",
       "      <td>276017.000000</td>\n",
       "      <td>276017.000000</td>\n",
       "      <td>276017.000000</td>\n",
       "      <td>276017.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>577.834388</td>\n",
       "      <td>1.238106</td>\n",
       "      <td>1.344900</td>\n",
       "      <td>0.249253</td>\n",
       "      <td>16.320051</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1349.081196</td>\n",
       "      <td>2.302294</td>\n",
       "      <td>2.850899</td>\n",
       "      <td>1.143897</td>\n",
       "      <td>32.189922</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.008000</td>\n",
       "      <td>0.001574</td>\n",
       "      <td>0.001865</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>31.966000</td>\n",
       "      <td>0.349922</td>\n",
       "      <td>0.370004</td>\n",
       "      <td>0.017328</td>\n",
       "      <td>3.809805</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>142.772500</td>\n",
       "      <td>0.821265</td>\n",
       "      <td>0.834172</td>\n",
       "      <td>0.059552</td>\n",
       "      <td>10.242489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>500.436500</td>\n",
       "      <td>1.011100</td>\n",
       "      <td>1.102495</td>\n",
       "      <td>0.165281</td>\n",
       "      <td>20.954794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>30174.302000</td>\n",
       "      <td>26.906061</td>\n",
       "      <td>99.264748</td>\n",
       "      <td>72.367393</td>\n",
       "      <td>2669.392578</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           exec_time     prediction         target       abs_diff  \\\n",
       "count  276017.000000  276017.000000  276017.000000  276017.000000   \n",
       "mean      577.834388       1.238106       1.344900       0.249253   \n",
       "std      1349.081196       2.302294       2.850899       1.143897   \n",
       "min         0.008000       0.001574       0.001865       0.000000   \n",
       "25%        31.966000       0.349922       0.370004       0.017328   \n",
       "50%       142.772500       0.821265       0.834172       0.059552   \n",
       "75%       500.436500       1.011100       1.102495       0.165281   \n",
       "max     30174.302000      26.906061      99.264748      72.367393   \n",
       "\n",
       "                 APE  \n",
       "count  276017.000000  \n",
       "mean       16.320051  \n",
       "std        32.189922  \n",
       "min         0.000000  \n",
       "25%         3.809805  \n",
       "50%        10.242489  \n",
       "75%        20.954794  \n",
       "max      2669.392578  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exec_time</th>\n",
       "      <th>prediction</th>\n",
       "      <th>target</th>\n",
       "      <th>abs_diff</th>\n",
       "      <th>APE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>299387.000000</td>\n",
       "      <td>299387.000000</td>\n",
       "      <td>299387.000000</td>\n",
       "      <td>299387.000000</td>\n",
       "      <td>299387.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>571.996887</td>\n",
       "      <td>1.234157</td>\n",
       "      <td>1.345729</td>\n",
       "      <td>0.223093</td>\n",
       "      <td>12.983403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1315.995884</td>\n",
       "      <td>2.357585</td>\n",
       "      <td>3.006141</td>\n",
       "      <td>1.238141</td>\n",
       "      <td>14.970219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.013000</td>\n",
       "      <td>0.001042</td>\n",
       "      <td>0.001400</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>32.825500</td>\n",
       "      <td>0.346737</td>\n",
       "      <td>0.369616</td>\n",
       "      <td>0.013997</td>\n",
       "      <td>3.175231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>147.170000</td>\n",
       "      <td>0.810723</td>\n",
       "      <td>0.824883</td>\n",
       "      <td>0.048328</td>\n",
       "      <td>8.397388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>494.729500</td>\n",
       "      <td>1.004372</td>\n",
       "      <td>1.081886</td>\n",
       "      <td>0.138263</td>\n",
       "      <td>17.388187</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>27927.257500</td>\n",
       "      <td>26.906689</td>\n",
       "      <td>108.446342</td>\n",
       "      <td>81.591415</td>\n",
       "      <td>335.025208</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           exec_time     prediction         target       abs_diff  \\\n",
       "count  299387.000000  299387.000000  299387.000000  299387.000000   \n",
       "mean      571.996887       1.234157       1.345729       0.223093   \n",
       "std      1315.995884       2.357585       3.006141       1.238141   \n",
       "min         0.013000       0.001042       0.001400       0.000000   \n",
       "25%        32.825500       0.346737       0.369616       0.013997   \n",
       "50%       147.170000       0.810723       0.824883       0.048328   \n",
       "75%       494.729500       1.004372       1.081886       0.138263   \n",
       "max     27927.257500      26.906689     108.446342      81.591415   \n",
       "\n",
       "                 APE  \n",
       "count  299387.000000  \n",
       "mean       12.983403  \n",
       "std        14.970219  \n",
       "min         0.000000  \n",
       "25%         3.175231  \n",
       "50%         8.397388  \n",
       "75%        17.388187  \n",
       "max       335.025208  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "val_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exec_time</th>\n",
       "      <th>prediction</th>\n",
       "      <th>target</th>\n",
       "      <th>abs_diff</th>\n",
       "      <th>APE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>236110.000000</td>\n",
       "      <td>236110.000000</td>\n",
       "      <td>236110.000000</td>\n",
       "      <td>236110.000000</td>\n",
       "      <td>236110.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>674.690589</td>\n",
       "      <td>1.209179</td>\n",
       "      <td>1.313958</td>\n",
       "      <td>0.241153</td>\n",
       "      <td>14.795569</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>1436.207752</td>\n",
       "      <td>2.371653</td>\n",
       "      <td>2.962423</td>\n",
       "      <td>1.207506</td>\n",
       "      <td>18.628445</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.159000</td>\n",
       "      <td>0.002081</td>\n",
       "      <td>0.004130</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>58.973000</td>\n",
       "      <td>0.352329</td>\n",
       "      <td>0.371583</td>\n",
       "      <td>0.015834</td>\n",
       "      <td>3.527706</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>198.297000</td>\n",
       "      <td>0.827683</td>\n",
       "      <td>0.834337</td>\n",
       "      <td>0.054322</td>\n",
       "      <td>9.576809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>626.946625</td>\n",
       "      <td>1.001174</td>\n",
       "      <td>1.061528</td>\n",
       "      <td>0.148256</td>\n",
       "      <td>19.524477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>30174.302000</td>\n",
       "      <td>26.906061</td>\n",
       "      <td>99.264748</td>\n",
       "      <td>72.367393</td>\n",
       "      <td>660.251038</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           exec_time     prediction         target       abs_diff  \\\n",
       "count  236110.000000  236110.000000  236110.000000  236110.000000   \n",
       "mean      674.690589       1.209179       1.313958       0.241153   \n",
       "std      1436.207752       2.371653       2.962423       1.207506   \n",
       "min         0.159000       0.002081       0.004130       0.000000   \n",
       "25%        58.973000       0.352329       0.371583       0.015834   \n",
       "50%       198.297000       0.827683       0.834337       0.054322   \n",
       "75%       626.946625       1.001174       1.061528       0.148256   \n",
       "max     30174.302000      26.906061      99.264748      72.367393   \n",
       "\n",
       "                 APE  \n",
       "count  236110.000000  \n",
       "mean       14.795569  \n",
       "std        18.628445  \n",
       "min         0.000000  \n",
       "25%         3.527706  \n",
       "50%         9.576809  \n",
       "75%        19.524477  \n",
       "max       660.251038  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test_df[(test_df['exec_time']*test_df['target'])>5].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArwAAAHCCAYAAAANehpvAAAgAElEQVR4XuydB3gV1daGv5lz0kgIoQeCEEgoItUOiF2xXRGxK9hFBVERxQY29HoVKyp2EVCsIFjBikiXLs3Qa2iBNFLPzH3WnkxIgDTmnJQ53zz//YVk9szsd++Q96xZe23NNE0TPEiABEiABEiABEiABEjApQQ0Cq9LR5bdIgESIAESIAESIAESUAQovJwIJEACJEACJEACJEACriZA4XX18LJzJEACJEACJEACJEACFF7OARIgARIgARIgARIgAVcToPC6enjZORIgARIgARIgARIgAQov5wAJkAAJkAAJkAAJkICrCVB4XT287BwJkAAJkAAJkAAJkACFl3OABEiABEiABEiABEjA1QQovK4eXnaOBEiABEiABEiABEiAwss5QAIkQAIkQAIkQAIk4GoCFF5XDy87RwIkQAIkQAIkQAIkQOHlHCABEiABEiABEiABEnA1AQqvq4eXnSMBEiABEiABEiABEqDwcg6QAAmQAAmQAAmQAAm4mgCF19XDy86RAAmQAAmQAAmQAAlQeDkHSIAESIAESIAESIAEXE2Awuvq4WXnSIAESIAESIAESIAEKLycAyRAAiRAAiRAAiRAAq4mQOF19fCycyRAAiRAAiRAAiRAAhRezgESIAESIAESIAESIAFXE6Dwunp42TkSIAESIAESIAESIAEKL+cACZAACZAACZAACZCAqwlQeF09vOwcCZAACZAACZAACZAAhZdzgARIgARIgARIgARIwNUEKLyuHl52jgRIgARIgARIgARIgMLLOUACJEACJEACJEACJOBqAhReVw8vO0cCJEACJEACJEACJEDh5RwgARIgARIgARIgARJwNQEKr6uHl50jARIgARIgARIgARKg8HIOkAAJkAAJkAAJkAAJuJoAhdfVw8vOkQAJkAAJkAAJkAAJUHg5B0iABEiABEiABEiABFxNgMLr6uFl50iABEiABEiABEiABCi8nAMkQAIkQAIkQAIkQAKuJkDhdfXwsnMkQAIkQAIkQAIkQAIUXs4BEiABEiABEiABEiABVxOg8Lp6eNk5EiABEiABEiABEiABCi/nAAmQAAmQAAmQAAmQgKsJUHhdPbzsHAmQAAmQAAmQAAmQAIWXc4AESIAESIAESIAESMDVBCi8rh5edo4ESIAESIAESIAESIDCyzlAAiRAAiRAAiRAAiTgagIUXlcPLztHAiRAAiRAAiRAAiRA4eUcIAESIAESIAESIAEScDUBCq+rh5edIwESIAESIAESIAESoPByDpAACZAACZAACZAACbiaAIXX1cPLzpEACZAACZAACZAACVB4OQdIgARIgARIgARIgARcTYDC6+rhZedIgARIgARIgARIgAQovJwDJEACJEACJEACJEACriZA4XX18LJzJEACJEACJEACJEACFF7OARIgARIgARIgARIgAVcToPC6enjZORIgARIgARIgARIgAQov5wAJkAAJkAAJkAAJkICrCVB4XT287BwJkAAJkAAJkAAJkACFl3OABEiABEiABEiABEjA1QQovK4eXnaOBEiABEiABEiABEiAwss5QAIkQAIkQAIkQAIk4GoCFF5XDy87RwIkQAIkQAIkQAIkQOHlHCABEiABEiABEiABEnA1AQqvq4eXnSMBEiABEiABEiABEqDwcg6QAAmQAAmQAAmQAAm4mgCF19XDy86RAAmQAAmQAAmQAAlQeDkHSIAESIAESIAESIAEXE2Awuvq4WXnSIAESIAESIAESIAEKLycAyRAAiRAAiRAAiRAAq4mQOF19fCycyRAAiRAAiRAAiRAAhRezgESIAESIAESIAESIAFXE6Dwunp42TkSIAESIAESIAESIAEKL+cACZAACZAACZAACZCAqwlQeF09vOwcCZAACZAACZAACZAAhZdzgARIgARIgARIgARIwNUEKLyuHl52jgRIgARIgARIgARIgMLLOUACJEACJEACJEACJOBqAhReVw8vO0cCJEACJEACJEACJEDh5RwgARIgARIgARIgARJwNQEKr6uHl50jARIgARIgARIgARKg8HIOkAAJkAAJkAAJkAAJuJoAhdfVw8vOkQAJkAAJkAAJkAAJUHg5B0iABEiABEiABEiABFxNgMLr6uFl50iABEiABEiABEiABCi8nAMkQAIkQAIkQAIkQAKuJkDhdfXwsnMkQAIkQAIkQAIkQAIUXs4BEiABEiABEiABEiABVxOg8Lp6eNk5EiABEiABEiABEiABCi/nAAmQAAmQAAmQAAmQgKsJUHhdPbzsHAmQAAmQAAmQAAmQAIWXc4AESIAESIAESIAESMDVBCi8rh5edo4ESIAESIAESIAESIDC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QuVu3/Poq+jV7YJsAcw9ERrOl3z6jyb8pA4f1qhWSS1K13VEua3ycUX5ye4eCA0Ckb+KNRu2IWn/YbRpfg4kT/ubKbPx0Ze/YPK4kahTq6o6UFrSd7W4PRD5dPmEJBAcAhS8weFerFWp5Sn/cM5dtEKJHzm5zzq8xWIL+g1vfTQREsHJfd15Qx+VpyvXrHl/YdSYL3HwyLEC6/CO/ngSJvxQeB1e7omguxiXXDdciaHclxw0fGfkg+qPint37eyB4D996VjB3xu34/nXP8Xm7XvUh5lzzq6NoYOuRsd2zbMB2HlXi9sDpYMyn5IEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmAAFr8PAaY4ESIAESIAESIAESMBZAhS8zvKmNRIgARIgARIgARIgAYcJUPA6DJzmSIAESIAESIAESIAEnCVAwessb1ojARIgARIgARIgARJwmMD/A+0h4uP8sgn4AAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sample_size = 3200\n",
    "\n",
    "fig = go.Figure()\n",
    "\n",
    "fig.add_trace(go.Scatter(x=list(range(sample_size)), y=test_df.iloc[:sample_size].sort_values(by=['target'])['prediction'],\n",
    "                    mode='markers', name='Predicted Speedup',marker=dict( size=2)))\n",
    "fig.add_trace(go.Scatter(x=list(range(sample_size)), y=test_df.iloc[:sample_size].sort_values(by=['target'])['target'],\n",
    "                    mode='lines', name='Measured Speedup' ))\n",
    "\n",
    "fig.update_yaxes(type=\"log\")\n",
    "fig.show('png') # use fig.show() for interactive mode"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Basic results on the benchmark set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loading batches from: /data/scratch/mmerouani/processed_datasets/dataset_Benchmark_batch10.pkl\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 3490/3490 [06:51<00:00,  8.49it/s] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GPU memory on cuda:1 nearly full, switching to CPU memory\n",
      "Number of batches 209\n",
      "Data loaded\n",
      "Sizes: (209, 0) batches\n"
     ]
    }
   ],
   "source": [
    "benchmark_dataset, benchmark_bl, benchmark_indices, _, _ = load_data(benchmark_dataset_file, 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 209/209 [00:04<00:00, 46.89it/s]\n"
     ]
    }
   ],
   "source": [
    "benchmark_df = get_results_df(benchmark_dataset, benchmark_bl, benchmark_indices, model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exec_time</th>\n",
       "      <th>prediction</th>\n",
       "      <th>target</th>\n",
       "      <th>abs_diff</th>\n",
       "      <th>APE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>421970.000000</td>\n",
       "      <td>421970.000000</td>\n",
       "      <td>421970.000000</td>\n",
       "      <td>421970.000000</td>\n",
       "      <td>421970.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>278.649851</td>\n",
       "      <td>0.783475</td>\n",
       "      <td>0.880940</td>\n",
       "      <td>0.324966</td>\n",
       "      <td>37.383327</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>782.865651</td>\n",
       "      <td>1.153458</td>\n",
       "      <td>1.581883</td>\n",
       "      <td>1.013817</td>\n",
       "      <td>108.208588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.000500</td>\n",
       "      <td>0.004219</td>\n",
       "      <td>0.002237</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>0.939500</td>\n",
       "      <td>0.152988</td>\n",
       "      <td>0.159301</td>\n",
       "      <td>0.020883</td>\n",
       "      <td>8.126566</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>32.206250</td>\n",
       "      <td>0.462187</td>\n",
       "      <td>0.470533</td>\n",
       "      <td>0.069968</td>\n",
       "      <td>19.862350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>191.909875</td>\n",
       "      <td>0.952370</td>\n",
       "      <td>0.926913</td>\n",
       "      <td>0.210568</td>\n",
       "      <td>40.264337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>19474.926000</td>\n",
       "      <td>22.491194</td>\n",
       "      <td>77.500000</td>\n",
       "      <td>76.347122</td>\n",
       "      <td>11199.112305</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           exec_time     prediction         target       abs_diff  \\\n",
       "count  421970.000000  421970.000000  421970.000000  421970.000000   \n",
       "mean      278.649851       0.783475       0.880940       0.324966   \n",
       "std       782.865651       1.153458       1.581883       1.013817   \n",
       "min         0.000500       0.004219       0.002237       0.000000   \n",
       "25%         0.939500       0.152988       0.159301       0.020883   \n",
       "50%        32.206250       0.462187       0.470533       0.069968   \n",
       "75%       191.909875       0.952370       0.926913       0.210568   \n",
       "max     19474.926000      22.491194      77.500000      76.347122   \n",
       "\n",
       "                 APE  \n",
       "count  421970.000000  \n",
       "mean       37.383327  \n",
       "std       108.208588  \n",
       "min         0.000000  \n",
       "25%         8.126566  \n",
       "50%        19.862350  \n",
       "75%        40.264337  \n",
       "max     11199.112305  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "benchmark_df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
